package com.xbongbong.paas.field;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

/**
 * @author: wufeng
 * @date: 2018/8/14 19:24
 * @desrcption:
 */
@Getter
@Setter
@ToString
public class ItemPoJo implements Serializable {

    private static final long serialVersionUID = 2102942351046960506L;

    /**
     * 显示的值
     */
    private String text;

    /***
     * 保存的值
     */
    private Object value;
    /**
     * 字典对应的code
     * String格式的原因：海镔数据字典code基本都是String格式
     */
    private String code;

    /**
     * 是否默认选中
     */
    private Boolean checked;

    /**
     * 是否为其他 0:不是，1：是
     */
    private Integer isOther;

    /**
     * 颜色
     */
    private String color;

    /**
     *  当前单选对应的值需要关联的字段
     */
    private List<String> fieldMap;

    /**
     * 是否统计
     */
    private Integer addtionnalField;

    /**
     *  字段在各个界面（新建、编辑、列表、详情）的展现形式，web端
     *  详见
     *  @see com.xbongbong.saas.enums.ShowTypeEnum
     *  默认值：0全部展示
     */
    private Integer showType;
    /**
     * 是否不允许编辑，只有不允许编辑时才刷它为1（客户阶段销售阶段等字段）
     */
    private Integer noEdit;
    /**
     * 是否不允许删除，只有不允许删除时才刷它为1（客户阶段销售阶段等字段）
     */
    private Integer noDel;
    /**
     * 是否不允许移动，只有不允许移动时才刷它为1（如流失原因下拉须在最后面）
     */
    private Integer noMove;
    /**
     *  下拉框表单设计为1不展示，其余展示
     */
    private Integer editHide;
    /**
     * 字段attr，目前是列表页的范围筛选用到
     */
    private String attr;
    /**
     * 各个下拉选项的默认账期
     */
    private ReceivablePeriodPojo receivablePeriod;
    /**
     * 移动端高级筛选用到
     */
    private Integer fieldType;
    /**
     * 移动端高级筛选用
     */
    private String alias;

    /**
     * 是否允许编辑 1：允许 0：不允许
     */
    private Integer disabled;

    private Double rate;

    private String baseName;

    /**
     *阶段流程id
     */
    private Long stageProcessId;

    /**
     *阶段id
     */
    private Long stageId;

    /**
     *跳出比例
     */
    private Integer stageRatio;

    /**
     * 阶段类型
     */
    private Integer stageType;

    /**
     * 是否允许跳过该阶段
     */
    private Integer allowSkipStage;

    /**
     * 是否启用
     */
    private Integer enable;

    /**
     * 选择输单原因下的必填字段
     */
    private JSONArray requiredList;

    /**
     * 选择输单原因下的显示字段
     */
    private JSONArray showList;

    /**
     * 选择输单原因下的必填字段的默认值
     */
    private JSONObject data;

    /**
     * 字段依赖- attrValue的下级字段列表
     */
    Map<String, List<ItemPoJo>> subAttrList;

    public ItemPoJo(){
        isOther = 0;
    }

    public ItemPoJo(String text, Object value) {
        this.text = text;
        this.value = value;
    }
    public ItemPoJo(String text, Object value,Boolean checked){
        this(text, value);
        this.checked = checked;
    }

    public ItemPoJo(String text, Object value, Boolean checked, String color){
        this(text, value, checked);
        this.color = color;
    }

    public ItemPoJo(String text, Object value,String attr){
        this(text, value);
        this.attr = attr;
    }

    public ItemPoJo(String text, Object value, String attr, Integer fieldType) {
        this(text, value, attr);
        this.fieldType = fieldType;
    }
}
